<?php 
	/**
	 * 二叉树遍历
	 */
	//定义数组
	$arr = array(12, 35, 56, 67, 19,34, 65, 54, 63, 83, 31, 59);

	//输出原数组
	print_r($arr);
	echo "<br>";

	//进行二叉树排序
	print_r(demo($arr));

	//定义数组的值
	function demo($arr)
	{
		# 判断传的数组是否为空，或者是否为数组
		if (!is_array($arr) || empty($arr)) {
			# code...
			return array();
		}

		//获取数组的长度
		$len = count($arr);
		//如果数组长度为1，返回该数组
		if ($len<=1) {
			# code...
			return $arr;
		}

		//定义二叉树的根节点数组
		$key[0] = $arr[0];

		//定义二叉树左右子节点数组
		$left = array();
		$right = array();

		//进行遍历
		for ($i=1; $i < $len; $i++) { 
			# 二叉树左右分支
			if($arr[$i] <= $key[0]){
				$left[] = $arr[$i];
			}else{
				$right[] = $arr[$i];
			}
		}

		//进行递归二叉树排列
		$left = demo($left);
		$right = demo($right);

		//array_merge()进行数组结合
		return array_merge($left, $key, $right);
	}

 ?>